home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / protocol / standard / ccitt / 1988 / 6_11_02.ps < prev    next >
Text File  |  1993-07-14  |  11KB  |  371 lines

  1. %!PS-Adobe-1.0
  2. %%Creator: cs.colorado.edu:schwartz (Mike Schwartz,CS faculty,2-3902)
  3. %%Title: stdin (ditroff)
  4. %%CreationDate: Fri Oct  4 17:47:27 1991
  5. %%EndComments
  6. % lib/psdit.pro -- prolog for psdit (ditroff) files
  7. % Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
  8. % last edit: shore Sat Nov 23 20:28:03 1985
  9. % RCSID: %Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel %
  10. % Psfig RCSID $Header: psdit.pro,v 1.5 88/01/04 17:48:22 trevor Exp $
  11.  
  12. /$DITroff 180 dict def $DITroff begin
  13.  
  14. /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap
  15. currentlinejoin currentdash currentgray currentmiterlimit ] cvx def
  16.  
  17. %% Psfig additions
  18. /startFig {
  19.     /SavedState save def
  20.     userdict maxlength dict begin
  21.     currentpoint transform
  22.  
  23.     DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap
  24.         setlinewidth setmatrix
  25.  
  26.     itransform moveto
  27.  
  28.     /ury exch def
  29.     /urx exch def
  30.     /lly exch def
  31.     /llx exch def
  32.     /y exch 72 mul resolution div def
  33.     /x exch 72 mul resolution div def
  34.     
  35.     currentpoint /cy exch def /cx exch def
  36.  
  37.     /sx x urx llx sub div def     % scaling for x
  38.     /sy y ury lly sub div def    % scaling for y
  39.  
  40.     sx sy scale            % scale by (sx,sy)
  41.  
  42.     cx sx div llx sub
  43.     cy sy div ury sub translate
  44.     
  45.     /DefFigCTM matrix currentmatrix def
  46.  
  47.     /initmatrix {
  48.         DefFigCTM setmatrix
  49.     } def
  50.     /defaultmatrix {
  51.         DefFigCTM exch copy
  52.     } def
  53.  
  54.     /initgraphics {
  55.         DocumentInitState setmiterlimit setgray setdash 
  56.             setlinejoin setlinecap setlinewidth setmatrix
  57.         DefFigCTM setmatrix
  58.     } def
  59.  
  60.     /showpage {
  61.         initgraphics
  62.     } def
  63.  
  64. } def
  65. % Args are llx lly urx ury (in figure coordinates)
  66. /clipFig {
  67.     currentpoint 6 2 roll
  68.     newpath 4 copy
  69.     4 2 roll moveto
  70.     6 -1 roll exch lineto
  71.     exch lineto
  72.     exch lineto
  73.     closepath clip
  74.     newpath
  75.     moveto
  76. } def
  77. % doclip, if called, will always be just after a `startfig'
  78. /doclip { llx lly urx ury clipFig } def
  79. /endFig {
  80.     end SavedState restore
  81. } def
  82. /globalstart {
  83.     % Push details about the enviornment on the stack.
  84.     fontnum fontsize fontslant fontheight 
  85.     % firstpage 
  86.     mh my resolution slotno currentpoint 
  87.     pagesave restore gsave 
  88. } def
  89. /globalend {
  90.     grestore moveto
  91.     /slotno exch def /resolution exch def /my exch def
  92.     /mh exch def 
  93.     % /firstpage exch def
  94.     /fontheight exch def
  95.     /fontslant exch def /fontsize exch def /fontnum exch def
  96.     F
  97.     /pagesave save def
  98. } def
  99.  
  100. %% end XMOD additions
  101.  
  102. /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
  103. /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
  104.   /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
  105.   /pagesave save def}def
  106. /PB{save /psv exch def currentpoint translate 
  107.   resolution 72 div dup neg scale 0 0 moveto}def
  108. /PE{psv restore}def
  109. /arctoobig 90 def /arctoosmall .05 def
  110. /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
  111. /tan{dup sin exch cos div}def
  112. /point{resolution 72 div mul}def
  113. /dround    {transform round exch round exch itransform}def
  114. /xT{/devname exch def}def
  115. /xr{/mh exch def /my exch def /resolution exch def}def
  116. /xp{}def
  117. /xs{docsave restore end}def
  118. /xt{}def
  119. /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
  120.  {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
  121. /xH{/fontheight exch def F}def
  122. /xS{/fontslant exch def F}def
  123. /s{/fontsize exch def /fontheight fontsize def F}def
  124. /f{/fontnum exch def F}def
  125. /F{fontheight 0 le {/fontheight fontsize def}if
  126.    fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
  127.    fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
  128.    makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
  129. /X{exch currentpoint exch pop moveto show}def
  130. /N{3 1 roll moveto show}def
  131. /Y{exch currentpoint pop exch moveto show}def
  132. /S{show}def
  133. /ditpush{}def/ditpop{}def
  134. /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
  135. /AN{4 2 roll moveto 0 exch ashow}def
  136. /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
  137. /AS{0 exch ashow}def
  138. /MX{currentpoint exch pop moveto}def
  139. /MY{currentpoint pop exch moveto}def
  140. /MXY{moveto}def
  141. /cb{pop}def    % action on unknown char -- nothing for now
  142. /n{}def/w{}def
  143. /p{pop showpage pagesave restore /pagesave save def}def
  144. /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
  145. /distance{dup mul exch dup mul add sqrt}def
  146. /dstroke{currentpoint stroke moveto}def
  147. /Dl{2 copy gsave rlineto stroke grestore rmoveto}def
  148. /arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
  149.  currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
  150.  currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
  151. /Dc{dup arcellipse dstroke}def
  152. /De{arcellipse dstroke}def
  153. /Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
  154.  /cradius centerv centerv mul centerh centerh mul add sqrt def
  155.  /eradius endv endv mul endh endh mul add sqrt def
  156.  /endang endv endh atan def
  157.  /startang centerv neg centerh neg atan def
  158.  /sweep startang endang sub dup 0 lt{360 add}if def
  159.  sweep arctoobig gt
  160.  {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
  161.   /midh midang cos midrad mul def /midv midang sin midrad mul def
  162.   midh neg midv neg endh endv centerh centerv midh midv Da
  163.   currentpoint moveto Da}
  164.  {sweep arctoosmall ge
  165.   {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
  166.   centerv neg controldelt mul centerh controldelt mul
  167.   endv neg controldelt mul centerh add endh add
  168.   endh controldelt mul centerv add endv add
  169.   centerh endh add centerv endv add rcurveto dstroke}
  170.  {centerh endh add centerv endv add rlineto dstroke}ifelse}ifelse}def
  171.  
  172. /Barray 200 array def % 200 values in a wiggle
  173. /D~{mark}def
  174. /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
  175.  /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
  176.  {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
  177.   Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
  178.   Bcontrol Blen 2 sub 2 copy get 2 mul put
  179.   Bcontrol Blen 1 sub 2 copy get 2 mul put
  180.   /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
  181.   {/i exch def
  182.    Bcontrol i get 3 div Bcontrol i 1 add get 3 div
  183.    Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
  184.    Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
  185.    /Xbi Xcont Bcontrol i 2 add get 2 div add def
  186.    /Ybi Ycont Bcontrol i 3 add get 2 div add def
  187.    /Xcont Xcont Bcontrol i 2 add get add def
  188.    /Ycont Ycont Bcontrol i 3 add get add def
  189.    Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
  190.   }for dstroke}if}def
  191. end
  192. /ditstart{$DITroff begin
  193.  /nfonts 60 def            % NFONTS makedev/ditroff dependent!
  194.  /fonts[nfonts{0}repeat]def
  195.  /fontnames[nfonts{()}repeat]def
  196. /docsave save def
  197. }def
  198.  
  199. % character outcalls
  200. /oc {/pswid exch def /cc exch def /name exch def
  201.    /ditwid pswid fontsize mul resolution mul 72000 div def
  202.    /ditsiz fontsize resolution mul 72 div def
  203.    ocprocs name known{ocprocs name get exec}{name cb}
  204.    ifelse}def
  205. /fractm [.65 0 0 .6 0 0] def
  206. /fraction
  207.  {/fden exch def /fnum exch def gsave /cf currentfont def
  208.   cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
  209.   fnum show rmoveto currentfont cf setfont(\244)show setfont fden show 
  210.   grestore ditwid 0 rmoveto} def
  211. /oce {grestore ditwid 0 rmoveto}def
  212. /dm {ditsiz mul}def
  213. /ocprocs 50 dict def ocprocs begin
  214. (14){(1)(4)fraction}def
  215. (12){(1)(2)fraction}def
  216. (34){(3)(4)fraction}def
  217. (13){(1)(3)fraction}def
  218. (23){(2)(3)fraction}def
  219. (18){(1)(8)fraction}def
  220. (38){(3)(8)fraction}def
  221. (58){(5)(8)fraction}def
  222. (78){(7)(8)fraction}def
  223. (sr){gsave 0 .06 dm rmoveto(\326)show oce}def
  224. (is){gsave 0 .15 dm rmoveto(\362)show oce}def
  225. (->){gsave 0 .02 dm rmoveto(\256)show oce}def
  226. (<-){gsave 0 .02 dm rmoveto(\254)show oce}def
  227. (==){gsave 0 .05 dm rmoveto(\272)show oce}def
  228. end
  229.  
  230. % an attempt at a PostScript FONT to implement ditroff special chars
  231. % this will enable us to 
  232. %    cache the little buggers
  233. %    generate faster, more compact PS out of psdit
  234. %    confuse everyone (including myself)!
  235. 50 dict dup begin
  236. /FontType 3 def
  237. /FontName /DIThacks def
  238. /FontMatrix [.001 0 0 .001 0 0] def
  239. /FontBBox [-260 -260 900 900] def% a lie but ...
  240. /Encoding 256 array def
  241. 0 1 255{Encoding exch /.notdef put}for
  242. Encoding
  243.  dup 8#040/space put %space
  244.  dup 8#110/rc put %right ceil
  245.  dup 8#111/lt put %left  top curl
  246.  dup 8#112/bv put %bold vert
  247.  dup 8#113/lk put %left  mid curl
  248.  dup 8#114/lb put %left  bot curl
  249.  dup 8#115/rt put %right top curl
  250.  dup 8#116/rk put %right mid curl
  251.  dup 8#117/rb put %right bot curl
  252.  dup 8#120/rf put %right floor
  253.  dup 8#121/lf put %left  floor
  254.  dup 8#122/lc put %left  ceil
  255.  dup 8#140/sq put %square
  256.  dup 8#141/bx put %box
  257.  dup 8#142/ci put %circle
  258.  dup 8#143/br put %box rule
  259.  dup 8#144/rn put %root extender
  260.  dup 8#145/vr put %vertical rule
  261.  dup 8#146/ob put %outline bullet
  262.  dup 8#147/bu put %bullet
  263.  dup 8#150/ru put %rule
  264.  dup 8#151/ul put %underline
  265.  pop
  266. /DITfd 100 dict def
  267. /BuildChar{0 begin
  268.  /cc exch def /fd exch def
  269.  /charname fd /Encoding get cc get def
  270.  /charwid fd /Metrics get charname get def
  271.  /charproc fd /CharProcs get charname get def
  272.  charwid 0 fd /FontBBox get aload pop setcachedevice
  273.  2 setlinejoin 40 setlinewidth
  274.  newpath 0 0 moveto gsave charproc grestore
  275.  end}def
  276. /BuildChar load 0 DITfd put
  277. %/UniqueID 5 def
  278. /CharProcs 50 dict def
  279. CharProcs begin
  280. /space{}def
  281. /.notdef{}def
  282. /ru{500 0 rls}def
  283. /rn{0 840 moveto 500 0 rls}def
  284. /vr{0 800 moveto 0 -770 rls}def
  285. /bv{0 800 moveto 0 -1000 rls}def
  286. /br{0 750 moveto 0 -1000 rls}def
  287. /ul{0 -140 moveto 500 0 rls}def
  288. /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
  289. /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
  290. /sq{80 0 rmoveto currentpoint dround newpath moveto
  291.     640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
  292. /bx{80 0 rmoveto currentpoint dround newpath moveto
  293.     640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
  294. /ci{500 360 rmoveto currentpoint newpath 333 0 360 arc
  295.     50 setlinewidth stroke}def
  296.  
  297. /lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
  298. /lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
  299. /rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
  300. /rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
  301. /lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
  302.     0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
  303. /rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
  304.     0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
  305. /lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
  306. /rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
  307. /lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
  308. /rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
  309. end
  310.  
  311. /Metrics 50 dict def Metrics begin
  312. /.notdef 0 def
  313. /space 500 def
  314. /ru 500 def
  315. /br 0 def
  316. /lt 416 def
  317. /lb 416 def
  318. /rt 416 def
  319. /rb 416 def
  320. /lk 416 def
  321. /rk 416 def
  322. /rc 416 def
  323. /lc 416 def
  324. /rf 416 def
  325. /lf 416 def
  326. /bv 416 def
  327. /ob 350 def
  328. /bu 350 def
  329. /ci 750 def
  330. /bx 750 def
  331. /sq 750 def
  332. /rn 500 def
  333. /ul 500 def
  334. /vr 0 def
  335. end
  336.  
  337. DITfd begin
  338. /s2 500 def /s4 250 def /s3 333 def
  339. /a4p{arcto pop pop pop pop}def
  340. /2cx{2 copy exch}def
  341. /rls{rlineto stroke}def
  342. /currx{currentpoint pop}def
  343. /dround{transform round exch round exch itransform} def
  344.  
  345. end
  346. end
  347. /DIThacks exch definefont pop
  348. ditstart
  349. (psc)xT
  350. 576 1 1 xr
  351. 1(Times-Roman)xf 1 f
  352. 2(Times-Italic)xf 2 f
  353. 3(Times-Bold)xf 3 f
  354. 4(Times-BoldItalic)xf 4 f
  355. 5(Helvetica)xf 5 f
  356. 6(Helvetica-Bold)xf 6 f
  357. 7(Courier)xf 7 f
  358. 8(Courier-Bold)xf 8 f
  359. 9(Symbol)xf 9 f
  360. 10(DIThacks)xf 10 f
  361. 10 s
  362. 1 f
  363. xi
  364. %%EndProlog
  365.  
  366. 0 p
  367. %%Trailer
  368. xt
  369.  
  370. xs
  371.